{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# fluid  API框架名\n",
    "\n",
    "fluid.backward  ： 反向传播\n",
    "    \n",
    "fluid.clip ： 修剪数据\n",
    "\n",
    "dataset\n",
    "\n",
    "fluid.dataset\n",
    "\n",
    "fluid.dygraph\n",
    "\n",
    "fluid.executor\n",
    "\n",
    "fluid.initializer\n",
    "\n",
    "fluid.io\n",
    "\n",
    "fluid.layers\n",
    "\n",
    "fluid.metrics\n",
    "\n",
    "fluid.nets\n",
    "\n",
    "fluid.optimizer\n",
    "\n",
    "fluid.profiler\n",
    "\n",
    "fluid.regularizer\n",
    "\n",
    "fluid.transpiler\n",
    "\n",
    "fluid.unique_name\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  fluid.backward  ： 反向传播\n",
    "\n",
    ">以下两个API ：声明式编程(静态图)专用API\n",
    " \n",
    " \n",
    "#### 1. append_backward： 根据用户的前向** 自动反向传播。此函数由优化器（Optimizer）的 minimize 函数自动调用，一般无需手动调用\n",
    "\n",
    "函数：\n",
    "\n",
    "**paddle.fluid.backward.append_backward(loss, parameter_list=None, no_grad_set=None, callbacks=None)**\n",
    "\n",
    "参数说明：\n",
    "> loss ( Variable ) - 网络的损失变量\n",
    "\n",
    "> parameter_list （list [Variable|str]，可选）- 指定优化器需要更新的参数或参数名称\b列表。如果为 None ，则将更新所有参数。默认值为 None。\n",
    "\n",
    ">no_grad_set （set [Variable|str]，可选）- 在 block0 ( Block ) 中要忽略梯度的 Variable 的名字的集合。所有的 Block 中带有 stop_gradient = True 的所有 Variable 的名字都会被自动添加到此集合中。如果该参数不为 None，则会将该参数集合的内容添加到默认的集合中。默认值为 None。\n",
    "\n",
    ">callbacks （list [callable object]，可选）- 回调函数列表。用于在反向传播构建中执行一些自定义作业。每次将新的梯度OP添加到程序中时，将调用其中的所有可调用对象。可调用对象必须有两个输入参数： Block 和 context 。 Block 是将被添加到新梯度算子的块。 context 是一个映射，其键是梯度 Variable 名，值是对应的原始 Variable 。除此之外， context 还有另一个特殊的键值对：键是字符串 __ current_op_desc__ ，值是刚刚触发可调用对象的梯度OP的 op_desc 。默认值为 None。\n",
    "    \n",
    "返回值：\n",
    ">参数及其梯度 Variable 的元组的列表。元组的第一个值为参数，第二个值为该参数的梯度 Variable 。\n",
    "\n",
    "返回类型\n",
    ">list[( Variable , Variable )]\n",
    "\n",
    "抛出异常\n",
    ">AssertionError - 如果 loss 不是 Variable 的实例。\n",
    "\n",
    "API位置：\n",
    "\n",
    "https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/backward_cn/append_backward_cn.html\n",
    "    \n",
    "\n",
    "#### 2. gradients： 将目标梯度反向传播到输入\n",
    "\n",
    "\n",
    "函数：\n",
    "\n",
    "**paddle.fluid.backward.gradients(targets, inputs, target_gradients=None, no_grad_set=None)**\n",
    "\n",
    "参数：\n",
    ">targets (Variable|list[Variable]) – 目标变量\n",
    "\n",
    ">inputs (Variable|list[Variable]) – 输入变量\n",
    "\n",
    ">target_gradients (Variable|list[Variable]，可选) – 目标的梯度变量，应与目标变量形状相同；如果设置为None，则以1初始化所有梯度变量\n",
    "\n",
    ">no_grad_set (set[Variable|str]，可选) – 在 block0 ( Block ) 中要忽略梯度的 Variable 的名字的集合。所有的 Block 中带有 stop_gradient = True 的所有 Variable 的名字都会被自动添加到此集合中。如果该参数不为 None，则会将该参数集合的内容添加到默认的集合中。默认值为 None。\n",
    "\n",
    "返回值：\n",
    "\n",
    ">数组，包含与输入对应的梯度。如果一个输入不影响目标函数，则对应的梯度变量为None\n",
    "\n",
    "返回值类型:\n",
    "\n",
    ">(list[Variable])\n",
    "\n",
    "\n",
    "API位置：\n",
    "https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/backward_cn/gradients_cn.html\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## fluid.clip ： 修剪\n",
    "\n",
    ">专用对于数据的修剪功能的API\n",
    "\n",
    "\n",
    "#### 1. ErrorClipByValue : 给予超出边界的张量值设定，最大和最小的值\n",
    "    \n",
    "\n",
    "函数：\n",
    "\n",
    "**class paddle.fluid.clip.ErrorClipByValue(max, min=None)**\n",
    "            \n",
    "参数\n",
    ">max:任何大于max（最大值）的值都被设置为 max\n",
    "\n",
    ">min:任何小于min（最小值）的值都被设置为 min\n",
    "            \n",
    "\n",
    "返回值：无\n",
    "\n",
    "API位置：\n",
    "\n",
    "https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/clip_cn/ErrorClipByValue_cn.html\n",
    "\n",
    "    \n",
    "####  2. GradientClipByGlobalNorm：将一个 张量列表 t_list 中所有Tensor的L2范数之和，限定在 clip_norm 参数范围内\n",
    "    \n",
    "> 使用限制\n",
    "\n",
    "\n",
    ">* 该类需要在初始化 optimizer 时进行设置后才能生效。\n",
    "\n",
    ">* L2范数定义为向量所有元素的平方和的开平方\n",
    "\n",
    "\n",
    "函数：\n",
    "\n",
    "**class paddle.fluid.clip.GradientClipByGlobalNorm(clip_norm, group_name='default_group', need_clip=None)**\n",
    "\n",
    "参数\n",
    ">* clip_norm: 所允许的范数最大值\n",
    "\n",
    ">* group_name='default_group' :剪切的组名\n",
    "\n",
    ">* need_clip=None:默认为None，此时会裁剪网络中全部参数。 \n",
    "    用于指定需要梯度裁剪的参数，该函数接收一个 Parameter ，返回一个布尔值 (True表示需要裁剪，False不需要裁剪)。\n",
    "\n",
    "返回值：无\n",
    "\n",
    "API位置：\n",
    "https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/clip_cn/GradientClipByGlobalNorm_cn.html\n",
    "\n",
    "    \n",
    "####  3. GradientClipByNorm\n",
    "    \n",
    "    \n",
    "####  4. GradientClipByValue\n",
    "    \n",
    "    \n",
    "####  5.  set_gradient_clip\n",
    "    \n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## dataset\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
